
point-char.o:     file format elf64-littleaarch64


Disassembly of section .text:

0000000000000000 <xy_close_g_all>:
#include <stdio.h>
#include <string.h>

static void xy_close_g_all(void)
{
   0:	a9ba7bfd 	stp	x29, x30, [sp, #-96]!
   4:	910003fd 	mov	x29, sp
	int i;
	char * cfgmsg[][1] = {
   8:	90000000 	adrp	x0, 0 <xy_close_g_all>
   c:	91000001 	add	x1, x0, #0x0
  10:	910063a0 	add	x0, x29, #0x18 ; cfgmsg
  14:	a9400c22 	ldp	x2, x3, [x1]
  18:	a9000c02 	stp	x2, x3, [x0]
  1c:	a9410c22 	ldp	x2, x3, [x1, #16]
  20:	a9010c02 	stp	x2, x3, [x0, #16]
  24:	a9420c22 	ldp	x2, x3, [x1, #32]
  28:	a9020c02 	stp	x2, x3, [x0, #32]
  2c:	a9430821 	ldp	x1, x2, [x1, #48]
  30:	a9030801 	stp	x1, x2, [x0, #48]
		{"$$cfgmsg,0,5,0\r\n"},
		{"$$cfgmsg,0,6,0\r\n"},
		{"$$cfgmsg,0,7,0\r\n"},
	};

	printf("sizeof(cfgmsg) = %ld\n", sizeof(cfgmsg));	// 64
  34:	90000000 	adrp	x0, 0 <xy_close_g_all>
  38:	91000000 	add	x0, x0, #0x0
  3c:	d2800801 	mov	x1, #0x40                  	// #64
  40:	94000000 	bl	0 <printf>
	printf("sizeof(cfgmsg)/sizeof(cfgmsg[0]) = %ld\n", sizeof(cfgmsg)/sizeof(cfgmsg[0]));	// 8
  44:	90000000 	adrp	x0, 0 <xy_close_g_all>
  48:	91000000 	add	x0, x0, #0x0
  4c:	d2800101 	mov	x1, #0x8                   	// #8
  50:	94000000 	bl	0 <printf>

	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
  54:	b9005fbf 	str	wzr, [x29, #92] ; i
  58:	1400000b 	b	84 <xy_close_g_all+0x84>
		printf("xy_close_g_all = %s\n", (char *)cfgmsg[i][0]);
  5c:	b9805fa0 	ldrsw	x0, [x29, #92]                   ; i
  60:	d37df000 	lsl	x0, x0, #3                           ; i << 3
  64:	910063a1 	add	x1, x29, #0x18                       ; cfgmsg
  68:	f8606821 	ldr	x1, [x1, x0]                         ; x1 = cfgmsg+i<<3
  6c:	90000000 	adrp	x0, 0 <xy_close_g_all>
  70:	91000000 	add	x0, x0, #0x0
  74:	94000000 	bl	0 <printf>
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
  78:	b9405fa0 	ldr	w0, [x29, #92]
  7c:	11000400 	add	w0, w0, #0x1
  80:	b9005fa0 	str	w0, [x29, #92]
  84:	b9405fa0 	ldr	w0, [x29, #92]
  88:	71001c1f 	cmp	w0, #0x7
  8c:	54fffe89 	b.ls	5c <xy_close_g_all+0x5c>  // b.plast
	}
}
  90:	d503201f 	nop
  94:	a8c67bfd 	ldp	x29, x30, [sp], #96
  98:	d65f03c0 	ret

000000000000009c <xy_close_g_all_2>:

static void xy_close_g_all_2(void)
{
  9c:	a9ba7bfd 	stp	x29, x30, [sp, #-96]!
  a0:	910003fd 	mov	x29, sp
	int i;
	char * cfgmsg[][1] = {
  a4:	90000000 	adrp	x0, 0 <xy_close_g_all>
  a8:	91000001 	add	x1, x0, #0x0
  ac:	910043a0 	add	x0, x29, #0x10 ; cfgmsg
  b0:	a9400c22 	ldp	x2, x3, [x1]
  b4:	a9000c02 	stp	x2, x3, [x0]
  b8:	a9410c22 	ldp	x2, x3, [x1, #16]
  bc:	a9010c02 	stp	x2, x3, [x0, #16]
  c0:	a9420c22 	ldp	x2, x3, [x1, #32]
  c4:	a9020c02 	stp	x2, x3, [x0, #32]
  c8:	a9430821 	ldp	x1, x2, [x1, #48]
  cc:	a9030801 	stp	x1, x2, [x0, #48]
		{"$$cfgmsg,0,6,0\r\n"},
		{"$$cfgmsg,0,7,0\r\n"},
	};
	char **p;

	printf("sizeof(cfgmsg) = %ld\n", sizeof(cfgmsg));	// 64
  d0:	90000000 	adrp	x0, 0 <xy_close_g_all>
  d4:	91000000 	add	x0, x0, #0x0
  d8:	d2800801 	mov	x1, #0x40                  	// #64
  dc:	94000000 	bl	0 <printf>
	printf("sizeof(cfgmsg)/sizeof(cfgmsg[0]) = %ld\n", sizeof(cfgmsg)/sizeof(cfgmsg[0]));	// 8
  e0:	90000000 	adrp	x0, 0 <xy_close_g_all>
  e4:	91000000 	add	x0, x0, #0x0
  e8:	d2800101 	mov	x1, #0x8                   	// #8
  ec:	94000000 	bl	0 <printf>

	for (i = 0; i < 8; i++) {
  f0:	b9005fbf 	str	wzr, [x29, #92]
  f4:	1400000b 	b	120 <xy_close_g_all_2+0x84>
		printf("xy_close_g_all_2 = %s\n", (char *)cfgmsg[i][0]);
  f8:	b9805fa0 	ldrsw	x0, [x29, #92]
  fc:	d37df000 	lsl	x0, x0, #3
 100:	910043a1 	add	x1, x29, #0x10
 104:	f8606821 	ldr	x1, [x1, x0]
 108:	90000000 	adrp	x0, 0 <xy_close_g_all>
 10c:	91000000 	add	x0, x0, #0x0
 110:	94000000 	bl	0 <printf>
	for (i = 0; i < 8; i++) {
 114:	b9405fa0 	ldr	w0, [x29, #92]
 118:	11000400 	add	w0, w0, #0x1
 11c:	b9005fa0 	str	w0, [x29, #92]
 120:	b9405fa0 	ldr	w0, [x29, #92]
 124:	71001c1f 	cmp	w0, #0x7
 128:	54fffe8d 	b.le	f8 <xy_close_g_all_2+0x5c>
	}

	p = (char **)cfgmsg;		// 去掉(char **)会告警: warning: assignment from incompatible pointer type [enabled by default]
 12c:	910043a0 	add	x0, x29, #0x10 ; cfgmsg
 130:	f9002ba0 	str	x0, [x29, #80] ; p
	printf("p === %s\n", *p);
 134:	f9402ba0 	ldr	x0, [x29, #80]
 138:	f9400001 	ldr	x1, [x0] ; *p
 13c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 140:	91000000 	add	x0, x0, #0x0
 144:	94000000 	bl	0 <printf>
	printf("p === %s\n", *(p+1));
 148:	f9402ba0 	ldr	x0, [x29, #80] ; p
 14c:	91002000 	add	x0, x0, #0x8   ; p+8
 150:	f9400001 	ldr	x1, [x0]       ; *(p+1)
 154:	90000000 	adrp	x0, 0 <xy_close_g_all>
 158:	91000000 	add	x0, x0, #0x0
 15c:	94000000 	bl	0 <printf>
	
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 160:	b9005fbf 	str	wzr, [x29, #92] ; i
 164:	1400000c 	b	194 <xy_close_g_all_2+0xf8>
		printf("repeat ---> xy_close_g_all_2 = %s\n", *(p+i));
 168:	b9805fa0 	ldrsw	x0, [x29, #92]                   ; i
 16c:	d37df000 	lsl	x0, x0, #3                           ; i << 3
 170:	f9402ba1 	ldr	x1, [x29, #80]                       ; p
 174:	8b000020 	add	x0, x1, x0                           ; p = i<<3
 178:	f9400001 	ldr	x1, [x0]
 17c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 180:	91000000 	add	x0, x0, #0x0
 184:	94000000 	bl	0 <printf>
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 188:	b9405fa0 	ldr	w0, [x29, #92]
 18c:	11000400 	add	w0, w0, #0x1
 190:	b9005fa0 	str	w0, [x29, #92]
 194:	b9405fa0 	ldr	w0, [x29, #92]
 198:	71001c1f 	cmp	w0, #0x7
 19c:	54fffe69 	b.ls	168 <xy_close_g_all_2+0xcc>  // b.plast
	}
}
 1a0:	d503201f 	nop
 1a4:	a8c67bfd 	ldp	x29, x30, [sp], #96
 1a8:	d65f03c0 	ret

00000000000001ac <xy_close_g_all_3>:

static void xy_close_g_all_3(void)
{
 1ac:	a9b97bfd 	stp	x29, x30, [sp, #-112]!
 1b0:	910003fd 	mov	x29, sp
	int i;
	char * cfgmsg[] = {
 1b4:	90000000 	adrp	x0, 0 <xy_close_g_all>
 1b8:	91000001 	add	x1, x0, #0x0
 1bc:	910063a0 	add	x0, x29, #0x18 ; cfgmsg
 1c0:	a9400c22 	ldp	x2, x3, [x1]
 1c4:	a9000c02 	stp	x2, x3, [x0]
 1c8:	a9410c22 	ldp	x2, x3, [x1, #16]
 1cc:	a9010c02 	stp	x2, x3, [x0, #16]
 1d0:	a9420c22 	ldp	x2, x3, [x1, #32]
 1d4:	a9020c02 	stp	x2, x3, [x0, #32]
 1d8:	a9430821 	ldp	x1, x2, [x1, #48]
 1dc:	a9030801 	stp	x1, x2, [x0, #48]
		"$$cfgmsg,0,7,0\r\n",
	};
	char **p;
	char *z;

	printf("sizeof(cfgmsg) = %ld\n", sizeof(cfgmsg));	// 64
 1e0:	90000000 	adrp	x0, 0 <xy_close_g_all>
 1e4:	91000000 	add	x0, x0, #0x0
 1e8:	d2800801 	mov	x1, #0x40                  	// #64
 1ec:	94000000 	bl	0 <printf>
	printf("sizeof(cfgmsg)/sizeof(cfgmsg[0]) = %ld\n", sizeof(cfgmsg)/sizeof(cfgmsg[0]));	// 8
 1f0:	90000000 	adrp	x0, 0 <xy_close_g_all>
 1f4:	91000000 	add	x0, x0, #0x0
 1f8:	d2800101 	mov	x1, #0x8                   	// #8
 1fc:	94000000 	bl	0 <printf>

	p = cfgmsg;		// 这里不需要(char **)
 200:	910063a0 	add	x0, x29, #0x18 ; cfgmsg
 204:	f9002fa0 	str	x0, [x29, #88] ; p
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 208:	b9006fbf 	str	wzr, [x29, #108] ; i
 20c:	1400000c 	b	23c <xy_close_g_all_3+0x90>
		printf("xy_close_g_all_3 = %s\n", *(p+i));
 210:	b9806fa0 	ldrsw	x0, [x29, #108]      ; i
 214:	d37df000 	lsl	x0, x0, #3               ; i << 3
 218:	f9402fa1 	ldr	x1, [x29, #88]           ; p
 21c:	8b000020 	add	x0, x1, x0
 220:	f9400001 	ldr	x1, [x0]
 224:	90000000 	adrp	x0, 0 <xy_close_g_all>
 228:	91000000 	add	x0, x0, #0x0
 22c:	94000000 	bl	0 <printf>
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 230:	b9406fa0 	ldr	w0, [x29, #108]
 234:	11000400 	add	w0, w0, #0x1
 238:	b9006fa0 	str	w0, [x29, #108]
 23c:	b9406fa0 	ldr	w0, [x29, #108]
 240:	71001c1f 	cmp	w0, #0x7
 244:	54fffe69 	b.ls	210 <xy_close_g_all_3+0x64>  // b.plast
	}

	z = *cfgmsg;
 248:	f9400fa0 	ldr	x0, [x29, #24] ; cfgmsg
 24c:	f90033a0 	str	x0, [x29, #96] ; z
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 250:	b9006fbf 	str	wzr, [x29, #108]
 254:	1400000a 	b	27c <xy_close_g_all_3+0xd0>
		printf("repeat ---> xy_close_g_all_3 = %s\n", (z+i));	// 指向第一行,z+i只在第一行移动.
 258:	b9806fa0 	ldrsw	x0, [x29, #108]
 25c:	f94033a1 	ldr	x1, [x29, #96]
 260:	8b000021 	add	x1, x1, x0
 264:	90000000 	adrp	x0, 0 <xy_close_g_all>
 268:	91000000 	add	x0, x0, #0x0
 26c:	94000000 	bl	0 <printf>
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 270:	b9406fa0 	ldr	w0, [x29, #108]
 274:	11000400 	add	w0, w0, #0x1
 278:	b9006fa0 	str	w0, [x29, #108]
 27c:	b9406fa0 	ldr	w0, [x29, #108]
 280:	71001c1f 	cmp	w0, #0x7
 284:	54fffea9 	b.ls	258 <xy_close_g_all_3+0xac>  // b.plast
	}

	z = *cfgmsg;
 288:	f9400fa0 	ldr	x0, [x29, #24]
 28c:	f90033a0 	str	x0, [x29, #96]
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 290:	b9006fbf 	str	wzr, [x29, #108]
 294:	1400000f 	b	2d0 <xy_close_g_all_3+0x124>
		printf("repeat2 ---> xy_close_g_all_3 = %s\n", z);	
 298:	90000000 	adrp	x0, 0 <xy_close_g_all>
 29c:	91000000 	add	x0, x0, #0x0
 2a0:	f94033a1 	ldr	x1, [x29, #96]
 2a4:	94000000 	bl	0 <printf>
		z = cfgmsg[i+1];
 2a8:	b9406fa0 	ldr	w0, [x29, #108] ; i
 2ac:	11000400 	add	w0, w0, #0x1    ; i + 1
 2b0:	93407c00 	sxtw	x0, w0
 2b4:	d37df000 	lsl	x0, x0, #3
 2b8:	910063a1 	add	x1, x29, #0x18
 2bc:	f8606820 	ldr	x0, [x1, x0]
 2c0:	f90033a0 	str	x0, [x29, #96]
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 2c4:	b9406fa0 	ldr	w0, [x29, #108]
 2c8:	11000400 	add	w0, w0, #0x1
 2cc:	b9006fa0 	str	w0, [x29, #108]
 2d0:	b9406fa0 	ldr	w0, [x29, #108]
 2d4:	71001c1f 	cmp	w0, #0x7
 2d8:	54fffe09 	b.ls	298 <xy_close_g_all_3+0xec>  // b.plast
	}

	z = cfgmsg[0];
 2dc:	f9400fa0 	ldr	x0, [x29, #24]
 2e0:	f90033a0 	str	x0, [x29, #96]
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 2e4:	b9006fbf 	str	wzr, [x29, #108]
 2e8:	1400000f 	b	324 <xy_close_g_all_3+0x178>
		printf("repeat3 ---> xy_close_g_all_3 = %s\n", z);	
 2ec:	90000000 	adrp	x0, 0 <xy_close_g_all>
 2f0:	91000000 	add	x0, x0, #0x0
 2f4:	f94033a1 	ldr	x1, [x29, #96]
 2f8:	94000000 	bl	0 <printf>
		z = cfgmsg[i+1];
 2fc:	b9406fa0 	ldr	w0, [x29, #108]
 300:	11000400 	add	w0, w0, #0x1
 304:	93407c00 	sxtw	x0, w0
 308:	d37df000 	lsl	x0, x0, #3
 30c:	910063a1 	add	x1, x29, #0x18
 310:	f8606820 	ldr	x0, [x1, x0]
 314:	f90033a0 	str	x0, [x29, #96]
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 318:	b9406fa0 	ldr	w0, [x29, #108]
 31c:	11000400 	add	w0, w0, #0x1
 320:	b9006fa0 	str	w0, [x29, #108]
 324:	b9406fa0 	ldr	w0, [x29, #108]
 328:	71001c1f 	cmp	w0, #0x7
 32c:	54fffe09 	b.ls	2ec <xy_close_g_all_3+0x140>  // b.plast
	}

	z = cfgmsg; // 类型不对会告警:warning: assignment from incompatible pointer type [enabled by default]
 330:	910063a0 	add	x0, x29, #0x18
 334:	f90033a0 	str	x0, [x29, #96]
				// 且首行输出乱码,其它行正常
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 338:	b9006fbf 	str	wzr, [x29, #108]
 33c:	1400000f 	b	378 <xy_close_g_all_3+0x1cc>
		printf("repeat4 ---> xy_close_g_all_3 = %s\n", z);	
 340:	90000000 	adrp	x0, 0 <xy_close_g_all>
 344:	91000000 	add	x0, x0, #0x0
 348:	f94033a1 	ldr	x1, [x29, #96]
 34c:	94000000 	bl	0 <printf>
		z = cfgmsg[i+1];
 350:	b9406fa0 	ldr	w0, [x29, #108]
 354:	11000400 	add	w0, w0, #0x1
 358:	93407c00 	sxtw	x0, w0
 35c:	d37df000 	lsl	x0, x0, #3
 360:	910063a1 	add	x1, x29, #0x18
 364:	f8606820 	ldr	x0, [x1, x0]
 368:	f90033a0 	str	x0, [x29, #96]
	for (i = 0; i < sizeof(cfgmsg)/sizeof(cfgmsg[0]); i++) {
 36c:	b9406fa0 	ldr	w0, [x29, #108]
 370:	11000400 	add	w0, w0, #0x1
 374:	b9006fa0 	str	w0, [x29, #108]
 378:	b9406fa0 	ldr	w0, [x29, #108]
 37c:	71001c1f 	cmp	w0, #0x7
 380:	54fffe09 	b.ls	340 <xy_close_g_all_3+0x194>  // b.plast
	}

}
 384:	d503201f 	nop
 388:	a8c77bfd 	ldp	x29, x30, [sp], #112
 38c:	d65f03c0 	ret

0000000000000390 <test>:
 * char *p[2]  表示p是一个存储指向char类型数据的指针的数组
 *
 * char (*p)[2]  则表示*p是一个拥有两个char类型元素的数组，那么p则表示指向这个数组的指针
 */
void test()
{
 390:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
 394:	910003fd 	mov	x29, sp
    char *p1[2];
    char (*p2)[2];

    printf("p1----%ld\n", sizeof(p1));	// 16
 398:	90000000 	adrp	x0, 0 <xy_close_g_all>
 39c:	91000000 	add	x0, x0, #0x0
 3a0:	d2800201 	mov	x1, #0x10                  	// #16
 3a4:	94000000 	bl	0 <printf>
    printf("p2----%ld\n", sizeof(p2));	// 8
 3a8:	90000000 	adrp	x0, 0 <xy_close_g_all>
 3ac:	91000000 	add	x0, x0, #0x0
 3b0:	d2800101 	mov	x1, #0x8                   	// #8
 3b4:	94000000 	bl	0 <printf>
	 *
	 * 而p2仅仅就只是一个指针，只占有4个字节
	 *
	 * https://www.cnblogs.com/xinglichao/p/9210132.html
	 */
}
 3b8:	d503201f 	nop
 3bc:	a8c27bfd 	ldp	x29, x30, [sp], #32
 3c0:	d65f03c0 	ret

00000000000003c4 <f>:
/*
 * int (*p)[4]，其实就是吧(*p)和[4]分开来理解，p所指的对象是有4个整形元素的数组，
 * 即p是指向一维数组的指针，或者说p指向的是二维数组的行，然后(*p)[0]指的是p指向的行的第0列。
 */
void f()
{
 3c4:	a9bc7bfd 	stp	x29, x30, [sp, #-64]!
 3c8:	910003fd 	mov	x29, sp
    int a[2][3] = {{4, 9, 6},{2, 5, 7}};
 3cc:	90000000 	adrp	x0, 0 <xy_close_g_all>
 3d0:	91000000 	add	x0, x0, #0x0
 3d4:	910043a2 	add	x2, x29, #0x10
 3d8:	aa0003e3 	mov	x3, x0
 3dc:	a9400460 	ldp	x0, x1, [x3]
 3e0:	a9000440 	stp	x0, x1, [x2]
 3e4:	f9400860 	ldr	x0, [x3, #16]
 3e8:	f9000840 	str	x0, [x2, #16]
    int (*p)[3], *q;    //p指 二维数组的行， q指 二维数组的列
    int max = a[0][0];
 3ec:	b94013a0 	ldr	w0, [x29, #16]
 3f0:	b9002fa0 	str	w0, [x29, #44]

    for (p = a; p - a < 2 ; p++) {        // p = a意思是p指向a[0]，p - a < 2，意思是有两行，计算时会变成0-0,1-0，不会超过二
 3f4:	910043a0 	add	x0, x29, #0x10
 3f8:	f9001fa0 	str	x0, [x29, #56]
 3fc:	14000017 	b	458 <f+0x94>
        for (q = *p; q - *p < 3 ; q++) {  // *p其实是(*p)[0],即*p指向第0列,这里省略了[0],就像上面p = a，其实是把a[0]赋给p，q - *p < 3意思是三行，意思同上
 400:	f9401fa0 	ldr	x0, [x29, #56]
 404:	f9001ba0 	str	x0, [x29, #48]
 408:	1400000c 	b	438 <f+0x74>
            if (*q > max)
 40c:	f9401ba0 	ldr	x0, [x29, #48]
 410:	b9400001 	ldr	w1, [x0]
 414:	b9402fa0 	ldr	w0, [x29, #44]
 418:	6b00003f 	cmp	w1, w0
 41c:	5400008d 	b.le	42c <f+0x68>
                max = *q;
 420:	f9401ba0 	ldr	x0, [x29, #48]
 424:	b9400000 	ldr	w0, [x0]
 428:	b9002fa0 	str	w0, [x29, #44]
        for (q = *p; q - *p < 3 ; q++) {  // *p其实是(*p)[0],即*p指向第0列,这里省略了[0],就像上面p = a，其实是把a[0]赋给p，q - *p < 3意思是三行，意思同上
 42c:	f9401ba0 	ldr	x0, [x29, #48]
 430:	91001000 	add	x0, x0, #0x4
 434:	f9001ba0 	str	x0, [x29, #48]
 438:	f9401ba1 	ldr	x1, [x29, #48]
 43c:	f9401fa0 	ldr	x0, [x29, #56]
 440:	cb000020 	sub	x0, x1, x0
 444:	f1002c1f 	cmp	x0, #0xb
 448:	54fffe2d 	b.le	40c <f+0x48>
    for (p = a; p - a < 2 ; p++) {        // p = a意思是p指向a[0]，p - a < 2，意思是有两行，计算时会变成0-0,1-0，不会超过二
 44c:	f9401fa0 	ldr	x0, [x29, #56]
 450:	91003000 	add	x0, x0, #0xc
 454:	f9001fa0 	str	x0, [x29, #56]
 458:	f9401fa1 	ldr	x1, [x29, #56]
 45c:	910043a0 	add	x0, x29, #0x10
 460:	cb000020 	sub	x0, x1, x0
 464:	f1005c1f 	cmp	x0, #0x17
 468:	54fffccd 	b.le	400 <f+0x3c>
        }
    }
    printf("Max: %d\n", max);
 46c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 470:	91000000 	add	x0, x0, #0x0
 474:	b9402fa1 	ldr	w1, [x29, #44]
 478:	94000000 	bl	0 <printf>
}
 47c:	d503201f 	nop
 480:	a8c47bfd 	ldp	x29, x30, [sp], #64
 484:	d65f03c0 	ret

0000000000000488 <main>:

void main()
{
 488:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
 48c:	910003fd 	mov	x29, sp
    char *ch = "init....";
 490:	90000000 	adrp	x0, 0 <xy_close_g_all>
 494:	91000000 	add	x0, x0, #0x0
 498:	f9000fa0 	str	x0, [x29, #24]
    printf("string = %s, len = %ld\n", ch, sizeof(ch)); // 8
 49c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 4a0:	91000000 	add	x0, x0, #0x0
 4a4:	d2800102 	mov	x2, #0x8                   	// #8
 4a8:	f9400fa1 	ldr	x1, [x29, #24]
 4ac:	94000000 	bl	0 <printf>
    printf("string = %s, len = %ld\n", ch, strlen(ch)); // 8
 4b0:	f9400fa0 	ldr	x0, [x29, #24]
 4b4:	94000000 	bl	0 <strlen>
 4b8:	aa0003e1 	mov	x1, x0
 4bc:	90000000 	adrp	x0, 0 <xy_close_g_all>
 4c0:	91000000 	add	x0, x0, #0x0
 4c4:	aa0103e2 	mov	x2, x1
 4c8:	f9400fa1 	ldr	x1, [x29, #24]
 4cc:	94000000 	bl	0 <printf>

    ch = "connected";
 4d0:	90000000 	adrp	x0, 0 <xy_close_g_all>
 4d4:	91000000 	add	x0, x0, #0x0
 4d8:	f9000fa0 	str	x0, [x29, #24]
    printf("string = %s, len = %ld\n", ch, sizeof(ch)); // 8
 4dc:	90000000 	adrp	x0, 0 <xy_close_g_all>
 4e0:	91000000 	add	x0, x0, #0x0
 4e4:	d2800102 	mov	x2, #0x8                   	// #8
 4e8:	f9400fa1 	ldr	x1, [x29, #24]
 4ec:	94000000 	bl	0 <printf>
    printf("string = %s, len = %ld\n", ch, strlen(ch)); // 9
 4f0:	f9400fa0 	ldr	x0, [x29, #24]
 4f4:	94000000 	bl	0 <strlen>
 4f8:	aa0003e1 	mov	x1, x0
 4fc:	90000000 	adrp	x0, 0 <xy_close_g_all>
 500:	91000000 	add	x0, x0, #0x0
 504:	aa0103e2 	mov	x2, x1
 508:	f9400fa1 	ldr	x1, [x29, #24]
 50c:	94000000 	bl	0 <printf>

    ch = "finish...\n";
 510:	90000000 	adrp	x0, 0 <xy_close_g_all>
 514:	91000000 	add	x0, x0, #0x0
 518:	f9000fa0 	str	x0, [x29, #24]
    printf("string = %s, len = %ld\n", ch, sizeof(ch)); // 8
 51c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 520:	91000000 	add	x0, x0, #0x0
 524:	d2800102 	mov	x2, #0x8                   	// #8
 528:	f9400fa1 	ldr	x1, [x29, #24]
 52c:	94000000 	bl	0 <printf>
    printf("string = %s, len = %ld\n", ch, strlen(ch)); // 9
 530:	f9400fa0 	ldr	x0, [x29, #24]
 534:	94000000 	bl	0 <strlen>
 538:	aa0003e1 	mov	x1, x0
 53c:	90000000 	adrp	x0, 0 <xy_close_g_all>
 540:	91000000 	add	x0, x0, #0x0
 544:	aa0103e2 	mov	x2, x1
 548:	f9400fa1 	ldr	x1, [x29, #24]
 54c:	94000000 	bl	0 <printf>

	xy_close_g_all();
 550:	97fffeac 	bl	0 <xy_close_g_all>
	xy_close_g_all_2();
 554:	97fffed2 	bl	9c <xy_close_g_all_2>
	xy_close_g_all_3();
 558:	97ffff15 	bl	1ac <xy_close_g_all_3>

    f();
 55c:	94000000 	bl	3c4 <f>

	test();
 560:	94000000 	bl	390 <test>
}
 564:	d503201f 	nop
 568:	a8c27bfd 	ldp	x29, x30, [sp], #32
 56c:	d65f03c0 	ret
